public class MaxValue {
    public int maxValue (int[][] grid) {
        // write code here
        int len1 = grid.length;
        int len2 = grid[0].length;
        int[][] dp = new int[len1+1][len2+1];
        for (int i = 1; i <= len1; i++) {
            for (int j = 1; j <= len2; j++) {
                dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]) + grid[i-1][j-1];
            }
        }
        return dp[len1][len2];
    }
}
